/*
class类当中实例对象上的值：
第一个来源：形参默认值
第二个来源：创建实例对象时传入的实参

*/
class Person1{
    name:string;
    age:number
    constructor(name:string='张三',age:number=19){
        this.name=name;
        this.age=age;
    }
    // 当get得到的值 没有写set时 它默认是只读属性
    get info():string{
        return this.name+this.age
    }
    set info(value){
        // 得到拦截后的新值
        console.log(value)
    }
}
// 创建实例对象
let zhangsan = new Person1();
console.log(zhangsan);
let lisi = new Person1('李四',18);
console.log(lisi);

// Person2是person1当中形参默认值的简洁版的写法，创建实例对象时就不能传参了
class Person2{
    name:string='小红';
    age:number=13
}
let xiaohong = new Person2();
console.log(xiaohong);
// let xiaoming = new Person2('xx')

// get set 同vue计算属性是同一类型 根据初始化的值 进行操作得到
// get 能计算得到新值 get 后面函数的return的值
console.log(zhangsan);
// set 拦截器 当get计算得到的新值发生变化 就会触发set set就会拦截 得到改变后的新值
zhangsan.info='你好18'